package ar.com.larreta.colegio.entidades;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;

import ar.com.larreta.entidades.Entidad;
import ar.com.larreta.utilidades.GeneradorClavesUnicas;

@Entity
@Table(name = "unidaddepago")
// Borrado logico
@SQLDelete (sql="UPDATE UnidadDePago SET fechaEliminacion=CURRENT_TIMESTAMP WHERE ID=?")
// Solamente trae los que no fueron borrados logicamente
@Where(clause="fechaEliminacion IS NULL")
public class UnidadDePago extends Entidad {
	
	private Long id;
	private Producto producto;
	private Double valor;
	private Pago pago;
	private Alumno alumno;

	@ManyToOne (fetch=FetchType.EAGER)
	@JoinColumn (name="idProducto")
	public Producto getProducto() {
		return producto;
	}

	public void setProducto(Producto producto) {
		this.producto = producto;
	}

	@ManyToOne (fetch=FetchType.LAZY)
	@JoinColumn (name="idAlumno")
	public Alumno getAlumno() {
		return alumno;
	}

	public void setAlumno(Alumno alumno) {
		this.alumno = alumno;
	}

	@Id 
	public Long getId() {
		if(id==null){
			GeneradorClavesUnicas clavesUnicas = new GeneradorClavesUnicas();
			id = clavesUnicas.getLastTime();
		}
		return id;
	}
	
	public void setId(Long id) {
		this.id = id;
	}
	
	@ManyToOne (fetch=FetchType.LAZY)
	@JoinColumn (name="idPago")
	public Pago getPago() {
		return pago;
	}

	public void setPago(Pago pago) {
		this.pago = pago;
	}

	@Basic @Column (name="valor")
	public Double getValor() {
		return valor;
	}
	
	public void setValor(Double valor) {
		this.valor = valor;
	}
	
}
